package com.atguigu.springbootdemo.controller;

import com.atguigu.springbootdemo.bean.Employee;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * Created by Smexy on 2022/11/15
 *
 *  404: 请求的资源不存在!
 *          发送的url，没有控制器处理！
 *
 *  405: 指前台发送的url的请求方式不符合后端要求！
 *
 *          ----------------
 *          返回数据的方式，俗称写接口！
 *          俗称写数据接口！
 *
 *  响应客户端
 *
 */
//@Controller  //声明我是一个控制器
    @RestController  // @Controller  + 为当前控制器的所有方法添加@ResponseBody
public class ResponseController
{

    /*
        不限制其前台发送的请求方式。只要url和value对应上就可以。

        如果需要限制前台发送到 请求方式。
     */
    //@RequestMapping(value = "/hi")
    //@PostMapping(value = "/hi")
    @GetMapping(value = "/hi")
    public String handle(){
        System.out.println("收到了hi请求");
        //返回页面 success.html
        return "/success.html";
    }

    /*
        返回数据:
            返回字面量。
            字面量： 从字面上就能看出变量的值。
                    基本数据类型包括包装类，String
            int i = 0;
            控制器直接返回！

             @ResponseBody: 加在方法上，将方法的返回值作为数据返回！
     */
    //@ResponseBody
    @RequestMapping(value = "/r1")
    public Object handle1(){
        System.out.println("收到了hi请求");

        //默认如果写的是字符串，当做页面名处理
        return "hahaha";
    }

     /*
        返回数据:
            返回非字面量。
            非字面量： 字面上看不出变量的值。
            Employee e = new Employee();

            控制器会调用 jackson(json解析)，把非字面量转为JSON，再返回
     */
     //@ResponseBody
     @RequestMapping(value = "/r2")
     public Object handle2(){

         Employee employee1 = new Employee(1, "tom", "male", "tom@163.com");

         return employee1;
     }




}
